#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 使用QLCDNumber实现一个“倒计时"的案例

    // 先给lcdnumber设置一个初始值
    ui->lcdNumber->display("10");
    // 设置每一秒减1的动作
    // Qt中封装了一个”定时器"——QTimer(结合了信号和槽机制)
    // 通过创建QTimer这样的一个对象，就可以产生一个timeout的信号
    // 通过start方法来开启定时器，并在参数中设置触发信号的周期间隔
    // 然后结合connect函数，把这个timeout信号绑定需要的槽函数中，就可以执行逻辑，修改LCDNumber中的数字了

    // 创建一个QTimer对象
    timer = new QTimer(this);
    // 将timeout信号与槽函数连接
    connect(timer, &QTimer::timeout, this, &Widget::handlerTimeout);
    // 启动定时器
    timer->start(1000); // 每一秒触发一次定时器(单位是ms)
    // 每次触发都会发射一个timeout信号




}

Widget::~Widget()
{
    delete ui;
}

void Widget::handlerTimeout()
{
    // 处理信号
    // 先拿到lcdNumber里面的数字
    qDebug() << "timeout信号被触发了!!";
    int val = ui->lcdNumber->intValue();
    // 如果数字已经小于等于0，则停止定时器
    if (val <= 0) {
        timer->stop();
        return;
    }
    val--;
    ui->lcdNumber->display(val);

}

